﻿/*
 * Создан: Оникийчук Антон Игоревич
 * Компания: ООО "ИМСАТ"
 * Дата создания: 21.01.2009
 * Время создания: 10:39
 * Emal разработчика: onikiychuka@gmail.com
 */
using System.Collections.ObjectModel;

namespace IMSAT.OFTD.DOM
{
    /// <summary>
    /// Синглтон хранящий коллекции пространств имен.
    /// </summary>
    public sealed class XmlNamespaceHolder
    {
        private static readonly XmlNamespaceHolder instance = new XmlNamespaceHolder();

        private readonly ObservableCollection<XmlNamespaceManagerCollection> _namespaceCollections =
            new ObservableCollection<XmlNamespaceManagerCollection>();

        private XmlNamespaceHolder()
        {
        }

        public static XmlNamespaceHolder Instance
        {
            get { return instance; }
        }

        /// <summary>
        /// Функция возвращающая коллекцию пространства имен по ноду.
        /// Если коллекции не существует то создается новая коллекция.
        /// </summary>
        /// <param name="node">узел дерева котору соответсвеут пространство имен</param>
        /// <returns></returns>
        public XmlNamespaceManagerCollection GetCollectionByNode(Node node)
        {
            foreach (XmlNamespaceManagerCollection cl in _namespaceCollections)
            {
                if (cl.Owner == node)
                    return cl;
            }
            var cl1 = new XmlNamespaceManagerCollection(node);
            _namespaceCollections.Add(cl1);
            return cl1;
        }
    }
}